package com.tmsps.ne4Weixin.api;

import com.alibaba.fastjson.JSONObject;
import com.tmsps.ne4Weixin.beans.QrCode;
import com.tmsps.ne4Weixin.config.WxConfig;
import com.tmsps.ne4Weixin.utils.HttpClient;

/**
 * @author zhangwei 396033084@qq.com 
 */
public class QrCodeAPI extends BaseAPI {

	private static final String QRCODEURL = BaseURL.concat("/cgi-bin/qrcode/create?access_token=%s");

	public QrCodeAPI(WxConfig config) {
		super(config);
	}

	/**
	 * 生成临时二维码参数，场景值ID，临时二维码时为32位非0整型，永久二维码时最大值为100000（目前参数只支持1--100000）
	 * 
	 * @author zhangwei 396033084@qq.com
	 * @param expire_seconds
	 * @param scene_id
	 * @return
	 */
	public String getTemporaryJson(int expire_seconds, int scene_id) {
		JSONObject params = new JSONObject();
		JSONObject actionInfo = new JSONObject();
		JSONObject sceneId = new JSONObject();
		params.put("expire_seconds", expire_seconds);
		params.put("action_name", "QR_SCENE");
		sceneId.put("scene_id", scene_id);
		actionInfo.put("scene", sceneId);
		params.put("action_info", actionInfo);
		return params.toJSONString();
	}

	/**
	 * 生成临时二维码参数，场景值ID，临时二维码时为32位非0整型，永久二维码时最大值为100000（目前参数只支持1--100000）
	 * 
	 * @author zhangwei 396033084@qq.com
	 * @param scene_id
	 * @return
	 */
	public String getPermanentJson(int scene_id) {
		JSONObject params = new JSONObject();
		JSONObject actionInfo = new JSONObject();
		JSONObject sceneId = new JSONObject();
		params.put("action_name", "QR_LIMIT_SCENE");
		sceneId.put("scene_id", scene_id);
		actionInfo.put("scene", sceneId);
		params.put("action_info", actionInfo);
		return params.toJSONString();
	}
	
	public String getPermanentStrJson(String scene_str) {
		JSONObject params = new JSONObject();
		JSONObject actionInfo = new JSONObject();
		JSONObject sceneStr = new JSONObject();
		params.put("action_name", "QR_LIMIT_STR_SCENE");
		sceneStr.put("scene_str", scene_str);
		actionInfo.put("scene", sceneStr);
		params.put("action_info", actionInfo);
		return params.toJSONString();
	}

	/**
	 * 创建临时二维码
	 * 
	 * @author zhangwei 396033084@qq.com
	 * @param expire_seconds
	 * @param scene_id
	 * @return
	 */
	public QrCode createTemporary(int expire_seconds, int scene_id) {
		String result = HttpClient.postJson(String.format(QRCODEURL, config.getAccessToken()), getTemporaryJson(expire_seconds, scene_id));
		return JSONObject.parseObject(result, QrCode.class);
	}

	/**
	 * 创建永久二维码
	 * 
	 * @author zhangwei 396033084@qq.com
	 * @param scene_id
	 * @return
	 */
	public QrCode createdPermanent(int scene_id) {
		String result = HttpClient.postJson(String.format(QRCODEURL, config.getAccessToken()), getPermanentJson(scene_id));
		return JSONObject.parseObject(result, QrCode.class);
	}
	
	public QrCode createdPermanent(String scene_id) {
		String result = HttpClient.postJson(String.format(QRCODEURL, config.getAccessToken()), getPermanentStrJson(scene_id));
		return JSONObject.parseObject(result, QrCode.class);
	}
}
